package com.example;


/**
 * @Author loubobooo
 * @Description #206. 反转链表
 * @Date 2022/2/17
 */
public class ReverseLinkedList {

    public static class ListNode {
        int val;
        ListNode next;

        public ListNode() {
        }

        public ListNode(int val) {
            this.val = val;
        }

        public ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }

    public ListNode reverseList(ListNode head) {
        ListNode cur = null;
        ListNode prev = head;
        while (prev != null) {
            // 保存下个节点
            ListNode next = prev.next;
            // 让当前节点的指针之前前一个节点
            // pre 的 next 指向 cur(断开连接) x->x->x
            prev.next = cur;
            // 让prev指向当前节点（这里已经完成了交换）
            // cur指向prev（往前推）
            cur = prev;
            // 让当前节点指向下一节点
            // prev指向next（往前推）
            prev = next;
        }
        return cur;
    }


    public static void main(String[] args) throws Exception {
        ListNode listNode = new ListNode(666);
        listNode.next = new ListNode(1);
    }
}
